{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Prepare & Labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_df = pd.read_excel('dataset/sample_1000.xlsx')\n",
    "sample_df['category'] = sample_df['情感倾向'].apply(lambda x: 'O' if x == '其他' else x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from transformers import AutoModelForSequenceClassification,AutoTokenizer,pipeline\n",
    "\n",
    "model = AutoModelForSequenceClassification.from_pretrained('uer/roberta-base-finetuned-dianping-chinese')\n",
    "tokenizer = AutoTokenizer.from_pretrained('uer/roberta-base-finetuned-dianping-chinese')\n",
    "text_classification = pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### split data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "df_train, df_val, df_test = np.split(\n",
    "    sample_df.sample(frac=1, random_state=42),\n",
    "    [int(0.8 * len(sample_df)), int(0.9 * len(sample_df))],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = []\n",
    "for _, row in df_test.iterrows():\n",
    "    pred.append(text_classification((str(row[\"title\"]) + \" \" + str(row[\"content\"]))[:513]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     1\n",
       "1     1\n",
       "2     0\n",
       "3     1\n",
       "4     1\n",
       "     ..\n",
       "95    1\n",
       "96    1\n",
       "97    1\n",
       "98    1\n",
       "99    1\n",
       "Length: 100, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred = pd.Series([1 if 'positive' in p[0]['label'] else 0 for p in pred])\n",
    "pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     1\n",
       "1     1\n",
       "2     0\n",
       "3     1\n",
       "4     1\n",
       "     ..\n",
       "95    1\n",
       "96    1\n",
       "97    1\n",
       "98    1\n",
       "99    1\n",
       "Name: category, Length: 100, dtype: int64"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "true = df_test.reset_index(drop=True)['category'].apply(lambda x: 1 if x == 'P' else 0)\n",
    "true"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.40      0.57      0.47         7\n",
      "           1       0.97      0.94      0.95        93\n",
      "\n",
      "    accuracy                           0.91       100\n",
      "   macro avg       0.68      0.75      0.71       100\n",
      "weighted avg       0.93      0.91      0.92       100\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "print(classification_report(true, pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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06ZNmTJlClOnTi11P8OGDaNjx44AdOrUiSFDhpS6fXm/iZ933nl8+eWXm12KJ4mKGDp0KB06dKBSkZO+fvrpJyZMmMDzzz/Ptddey/fff7/hsWeeeYY5c+Zw4IEHMmzYsK1+/XhkxYji4YdhxYoSGhMNGgRdusCf/hSOTYnIZkr75p9M7dq147rrruOLL75gxYoVHHHEEcyYMYPevXvz2WefsfPOO9O5c+cyl3sOGTKEefPmMXjwYADmzJnDd999R8OGDdl+++1Zs2YNVWLL3xctWkSt2PHpgw46iM8//3yTb/NbUp4RRe3atZk5c+aG27NmzaJ27dol7nvo0KH069dvs30A1K9fn1atWjFx4kT222+/DY9XqlSJTp06ce+999KlS5dSY0+Iik5uRHUpPpm9dKn7zju7t2u3hRmdp55yN3Nv3dp92bItTvqI5KqoJ7MLdezY0Q899FDv0aOHu7t/+eWX3qRJE1+/fr3PmzfPd999d3/mmWfcfcuT2d988403atRok/t69Ojh//d//+fu7u3bt/enn37a3d1XrFixyYT5G2+84YcffrjPnTvX3d1Xr17tTz755Fb9PmvXrvV9993Xf/jhhw2T2ZMnT97ittOmTfO9997bCwoKNty3aNEiX7Vqlbu7z58/3xs0aOBTpkzxgoIC/+6779zdvaCgwLt16+bdunXb4n4TPZmd8SOKJ58soTGRO7z8Mpx0Uvi5/faRxCcipTvnnHM488wzNxyCOvTQQ2natCkHHHAAdevW5Zhjjin1+UOGDOHMYkXd2rdvz9lnn02PHj146KGHuPTSS+nbty/uzoUXXkiLFi0AOOWUU/jll184/vjjcXfMjIsuumirfp9tt92WRx55hJNOOon169dz0UUXcdBBBwHQo0cP8vLyNix5HTp0KJ06ddrkUNi0adO49NJL2WabbSgoKKB79+40btyYgoIC/vrXv/L777/j7hx66KE89thjWxVrvDK6hMfq1aFdRMOG4WzsDVavDqdlr1wJ22wTxynaIrln2rRpHFih/sCS7rb0b5uzJTwGDw61/G65pcid994bGg0tWRJGEUoSIiJbJWMTxfr1oVxH06ZwwgmxO++6C26+OVR/3WGHSOMTEckWGTtH8eqroRndsGFgONzeA+6+Gy64AJ55phz1xUVEpDQZOaJwh/x8aNAA2rcHevcOSaJr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",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn import metrics\n",
    "import pylab as plt\n",
    "\n",
    "fpr, tpr, threshold = metrics.roc_curve(true, pred)\n",
    "roc_auc = metrics.auc(fpr, tpr)\n",
    "plt.figure(figsize=(6,6))\n",
    "plt.title('Validation ROC')\n",
    "plt.plot(fpr, tpr, 'b', label = 'Val AUC = %0.3f' % roc_auc)\n",
    "plt.legend(loc = 'lower right')\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0, 1])\n",
    "plt.ylim([0, 1])\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "2f394aca7ca06fed1e6064aef884364492d7cdda3614a461e02e6407fc40ba69"
  },
  "kernelspec": {
   "display_name": "Python 3.8.10 ('base')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
